package com.leehom.arch.storage.handler;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import com.leehom.arch.storage.exception.FileStorageException;
import com.leehom.arch.storage.exception.NotADirException;
import com.leehom.arch.storage.model.FileItem;
import com.leehom.arch.storage.model.Storage;

/**
 * 
 * @类名: FileStorageHandler
 * @说明: 文件存储接口
 *        1. 存储文件
 *        2. 列表文件夹文件
 *        3. 获取文件
 *
 * @author   leehom
 * @Date	 2018年3月13日 下午2:08:05
 * 修改记录：
 *
 * @see
 */
public interface FileStorageHandler {
	
	/**
	 * @说明：处理器schema
	 *
	 * @author leehom
	 * @return
	 * 
	 */
	public String schema();
	
	/**
	 * 
	 * @说明：获取文件/列表文件
	 *
	 * @author leehom
	 * @param path
	 * @param fileName
	 * @param file
	 * @param storage
	 *
	 */
	public InputStream getFile(String path, String fileName, Storage storage) throws FileStorageException;
	public List<FileItem> listFileOfDir(String path, Storage storage) throws FileStorageException;
	
	/**
	 * 
	 * @说明：存储文件
	 *
	 * @author liugh
	 * @param path
	 * @param fileName
	 * @param file
	 * @param storage
	 * @throws IOException 
	 *
	 */
	public void saveFile(String path, String fileName, InputStream inStream, Storage storage) throws FileStorageException;
	
	/**
	 * @说明：获取文件完整Url
	 *
	 * @author leehom
	 * @param path
	 * @param fileName
	 * @param storage
	 * @return
	 * 
	 */
	public String getUrl(String path, String fileName, Storage storage);
	
	public void deleteFile(String path, String fileName, Storage storage) throws FileStorageException;
	public void deleteDir(String path, Storage storage) throws FileStorageException;

	
}
